A variety of non-volatile memory technologies may be utilized to store program code in any microcontroller system. The three major technologies are: (1) the erasable MOS-technology programmable read-only memory (EPROM), which uses ultraviolet (UV) light to erase the memory, (2) the electrically erasable programmable read-only memory (EEPROM), and (3) the Flash EPROM memory. The Flash EPROM memory combines the electrical erase capability of the EEPROM with the simplicity and lower cost of the EPROM layout. The Flash EPROM memory may be erased while the device is installed in a host system, unlike the UV EPROM, which usually must be removed from the host system for erasure and subsequent reprogramming.
Each of the three major technologies mentioned above implement their footprints with similar but distinctly different pin configurations. Also, within any given technology, certain pin positions change their function as the storage capacity of the device is changed. Thus, when a microcontroller system is designed, it is designed to support a specific memory device for program code storage, selected from one of the available technologies. The storage capacity is selected to support the need for the system being designed. These choices, made when the system is designed, preclude the later use of alternate memory technologies, and/or different storage capacities in a given technology, without resorting to costly redesign of the system. This is not a serious disadvantage when the system being designed is to be manufactured in large quantities. There are many applications for microcontrollers, however, such as transport refrigeration applications, where the production quantities are not large, and/or the microcontroller system is designed to operate in a family of related, but different, applications requiring different degrees of sophistication. In such applications, it would be desirable to make the microcontroller system, as originally designed, extremely flexible in order to match the appropriate memory technology with the individual requirements of each application of the system, as well as to be able to respond to the changing requirements of a given application, without costly redesign or retrofit of the system. Such flexibility would also enable a manufacturer to change the memory technology used in a given microcontroller system as price and availability of different memory technologies fluctuate in the marketplace.